package com.wxh.jmh.runner;

import com.wxh.jmh.benchmark.StringConnectBenchmark;
import org.openjdk.jmh.annotations.Mode;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.options.Options;
import org.openjdk.jmh.runner.options.OptionsBuilder;

/**
 * @ClassName: StringBuilderRunner
 * @Description: 字符串构建运行类
 * @Author wxh
 * @Date: 2020/8/5 15:35
 * @Version V1.0.0
 * @Since 1.8
 */
public class StringBuilderRunner {
    /**
     * JMH(Java Microbenchmark Harness)通常有两种方式启动: 一种就是通过命令行使用 maven命令执行。这种适合对于大型基准测试，
     * 像那些要运行很多很多次，并且运行的时间也很长的情况下。你可以直接打个 jar包，发到服务器上
     * 一种通过 Main方法运行的方式, 测试一个小功能
     * @param args
     * @throws RunnerException
     */
    public static void main(String[] args) throws RunnerException {
        Options opt = new OptionsBuilder()
                // 导入要测试的类
                .include(StringConnectBenchmark.class.getSimpleName())
                // 预热5轮
                .warmupIterations(5)
                // 度量10轮
                .measurementIterations(10)
                // 预热模式
                .mode(Mode.Throughput)
                // 预热分支
                .forks(3)
                .build();
        // 启动基准测试类
        new Runner(opt).run();
    }
}
